import {config} from './../config/index.js'

// 同时发送异步代码的次数，防止一次点击中有多次请求，用于处理
let ajaxTimes = 0;
// 封装请求方法，并向外暴露该方法
export const request = (options) => {
	// 解构请求头参数
	let header = {...options.header};
	ajaxTimes++;
	// 显示加载中 效果
	uni.showLoading({
		title: "加载中",
	    mask: true,
	});
	return new Promise((resolve,reject) => {
		uni.request({
			url: config.BASE_URL + options.url,
			method: options.method || 'GET',
			data: options.data || {},
			header,
			success: (res) => {
				if (res.data.status !== 0) {
					return uni.showToast({
						title: '获取数据失败',
						duration: 2000
					});
				}
				resolve(res);
			},
			fail: (err) => {
				return uni.showToast({
					title: '网络请求失败',
					duration: 2000
				});
				reject(err);
			},
			// 完成之后关闭加载效果
			complete:() => {
				ajaxTimes--;
				if (ajaxTimes === 0) {
					// 关闭正在等待的图标
					uni.hideLoading();
				}
			}
		})
	})
}
